package leetcode;

import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;

/**
 * @创建人 MBY381
 * @创建时间 2022/4/3 20:54
 * @描述 给定一个只包括 '('，')'，'{'，'}'，'['，']' 的字符串 s ，判断字符串是否有效。
 * <p>
 * 有效字符串需满足：
 * <p>
 * 左括号必须用相同类型的右括号闭合。
 * 左括号必须以正确的顺序闭合。
 */
public class Solution20 {
    public static boolean isValid(String s) {
        if (s.length() % 2 != 0) {
            return false;
        }
        int tag = 0, sum = 0;
        char[] arr = s.toCharArray();
        ArrayList<Character> li = new ArrayList<>();
        for (char c : arr) {
            li.add(c);
        }
        while (tag < li.size() - 1) {
            if (cmpForSolution20(li, tag)) {
                System.out.println(li);
                li.remove(tag);
                li.remove(tag);
                //去除重复元素
                if (tag == 0) {
                    --tag;
                } else {
                    tag = tag - 2;
                }

                System.out.println("--: " + tag);
                sum += 2;
            }
            tag++;
            System.out.println("tag before ++" + tag);
            System.out.println("tag" + tag);
        }
        System.out.println(li);
        return sum == s.length();
    }

    public static boolean cmpForSolution20(ArrayList<Character> arr, int tag) {
        char a = arr.get(tag);
        char b = arr.get(tag + 1);
        List<Character> left = new ArrayList<>(Arrays.asList('{', '[', '('));
        List<Character> right = new ArrayList<>(Arrays.asList('}', ']', ')'));
        return left.contains(a) && right.contains(b) && (left.indexOf(a) == right.indexOf(b));
    }

    public static void main(String[] args) {
        System.out.println(isValid("{[]}"));

    }
}
